package model;

//Implementação do Templade Method
public abstract  class Formas {
    public final String templateMethodCalc() {
        return "A área do "+getName()+" é "+getArea();
    }    
    /**
     * Metodo utilizado no Template Method
     * Captura o nome da figura via Reflection pelo nome da classe que chama este método
     * Neste caso o Template Method ustiliza o método "getName()" chamado pelas classes concretas 
     * que herdam "Formas", o que define seu comportamento
     */
    public String getName() {
        return this.getClass().getSimpleName().toLowerCase();
    }
    
    public abstract double getArea();
}
